<?php
	require_once PATH_OBJECT.'dataObject.php';
	
class dataObject_garantieSouscrite extends dataObject
{
	/* @desc    Identifiant de la garantie souscrite
     * @var     int
     */
    public $_IDENTIFIANT_GAR_SOUSC  = 0;
    
	/* @desc    etat de la garantie souscrite
     * @var     enum('A', 'I')
     */
    public $_ETAT_GAR_SOUSC = '';
    
	/* @desc    date de debut d'effet de la garantie souscrite
     * @var     date
     */
    public $_DATE_EFFET_GAR_SOUSC = '';
    
	/* @desc   date de fin d'effet de la garantie souscrite
     * @var     date
     */
    public $_DATE_FIN_EFFET_GAR_SOUSC = '';
    
	/* @desc    Identifiant contrat de la garantie souscrite
     * @var     int
     */
    public $_IDENTIFIANT_CONTRAT  = 0;
    
	/* @desc    Identifiant personne de la garantie souscrite
     * @var     int
     */
    public $_IDENTIFIANT_PERSONNE  = 0;
    
	/* @desc    Identifiant garantie de la garantie souscrite
     * @var     int
     */
    public $_IDENTIFIANT_GARANTIE  = 0;
    
	/* @desc    Identifiant formule de la garantie souscrite
     * @var     int
     */
    public $_IDENTIFIANT_FORMULE  = 0;

    const ETAT_ACTIF = 'A';
    const ETAT_INACTIF = 'I';
    
  public function __construct( $iId=0 )
    {
       parent::__construct();

       if ( $iId != 0 )
       {
            $sQuery = "SELECT   *   /*+ dataObject_garantieSouscrite::__construct */  
                       FROM garantiesouscrite 
            		   WHERE Identifiant_garantie_souscrite = ".$iId;
            
            $aRows =  self::$_oConnexion->query($sQuery);
	  		$aRow = $aRows[0];
            $this->_IDENTIFIANT_GAR_SOUSC   = $iId;
            $this->_ETAT_GAR_SOUSC 			= $aRow['Etat_garantie_souscrite'];
			$this->_DATE_EFFET_GAR_SOUSC 	= self::showDate($aRow['Date_effet_garantie_souscrite']);
			$this->_DATE_FIN_EFFET_GAR_SOUSC = self::showDate($aRow['Date_fin_effet_garantie_souscrite']);
			$this->_IDENTIFIANT_CONTRAT  	= $aRow['Identifiant_contrat'];
			$this->_IDENTIFIANT_PERSONNE  	= $aRow['Identifiant_personne'];
			$this->_IDENTIFIANT_GARANTIE  	= $aRow['Identifiant_garantie'];
			$this->_IDENTIFIANT_FORMULE  	= $aRow['Identifiant_formule'];

       }
    }
    /**
     * récupere la table xxxx selon le(s) criter(s) précisés ou pas 
	 */
    function garantieSouscrite_select( $sCritere = null )
    {
        $aRow = false;
    	$sQuery = "SELECT  *    
                   FROM garantiesouscrite 
            	   WHERE 1=1 
            	   {$sCritere}";
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
    //liste des garantie souscrite selon l'identifiant de l'intervenant d'un contrat
    public function garantieSouscrite_getListDetailCouverture($sIdContrat)
     {

    	$sQuery = "SELECT  DISTINCT Etat_garantie_souscrite, Libelle_garantie,
    				Type_role, Type_assure, Nom_personne, Prenom_personne   
                   FROM garantiesouscrite garsous, garantie gar, role,personne
            	   WHERE garsous.Identifiant_garantie = gar.Identifiant_garantie
            	   AND garsous.Identifiant_personne = personne.Identifiant_personne
            	   AND role.Identifiant_personne = personne.Identifiant_personne
            	   AND role.Identifiant_contrat = garsous.Identifiant_contrat
            	   AND garsous.Identifiant_contrat = '".$sIdContrat."'
            	    AND Type_role <> 'S' "  ;
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
    /**
     * liste des garanties souscrites optionnelles pour les intervenants d'un contrat
     *
     * @param int $sIdContrat
     * @return array
     */public function garantieSouscrite_getListOptionnelActif($sIdContrat)
     {

    	$sQuery = "SELECT  DISTINCT Identifiant_garantie_souscrite, 
    				r.Identifiant_role, p.Identifiant_personne, 
    				Libelle_garantie,
    				Type_role, Type_assure, 
    				Nom_personne, Prenom_personne   
                   FROM garantiesouscrite garsous, garantie gar, role r, personne p
            	   WHERE garsous.Identifiant_contrat = '".$sIdContrat."'
            	   AND garsous.Identifiant_garantie = gar.Identifiant_garantie
            	   AND garsous.Identifiant_personne = p.Identifiant_personne
            	   AND r.Identifiant_personne = p.Identifiant_personne
            	   AND r.Identifiant_contrat = garsous.Identifiant_contrat
            	   AND Etat_garantie_souscrite = 'A' 
            	   AND Type_role <> 'S' "  ;
    	
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
    
	public function garantieSouscrite_getList()
    {
        $aRow = false;
    	$sCritere = " ";
        $aRow =  $this->garantieSouscrite_select ($sCritere);
        
        return $aRow;
    }
    
    
	
	public function garantieSouscrite_insert()
    {
    	$bId = false;
    	$sQuery = "INSERT INTO garantiesouscrite (
    			Etat_garantie_souscrite,
				Date_effet_garantie_souscrite ,
				Date_fin_effet_garantie_souscrite ,
				Identifiant_contrat ,
				Identifiant_personne ,
				Identifiant_garantie ,
				Identifiant_formule 
    	    		) values (
    			'$this->_ETAT_GAR_SOUSC',".
				self::$_oConnexion->date($this->_DATE_EFFET_GAR_SOUSC).", ".
				self::$_oConnexion->date($this->_DATE_FIN_EFFET_GAR_SOUSC)." ,
				$this->_IDENTIFIANT_CONTRAT ,
				$this->_IDENTIFIANT_PERSONNE ,
				$this->_IDENTIFIANT_GARANTIE ,
				$this->_IDENTIFIANT_FORMULE 
    			)";
    	
        	$bId = self::$_oConnexion->execute($sQuery);
    	return $bId;
    }
    
    public function garantieSouscrite_update()
    {
    	$sQuery = "UPDATE garantiesouscrite SET 
    		 Etat_garantie_souscrite = '$this->_ETAT_GAR_SOUSC',
				Date_effet_garantie_souscrite = ".self::$_oConnexion->date($this->_DATE_EFFET_GAR_SOUSC)." ,
				Date_fin_effet_garantie_souscrite = ".self::$_oConnexion->date($this->_DATE_FIN_EFFET_GAR_SOUSC)." ,
				Identifiant_contrat = $this->_IDENTIFIANT_CONTRAT ,
				Identifiant_personne = $this->_IDENTIFIANT_PERSONNE,
				Identifiant_garantie = $this->_IDENTIFIANT_GARANTIE ,
				Identifiant_formule = $this->_IDENTIFIANT_FORMULE	
	    		WHERE Identifiant_garantie_souscrite 	= ".$this->_IDENTIFIANT_GAR_SOUSC;

    	return self::$_oConnexion->execute($sQuery);
    }
    
public function insertGarantieSouscrite_SelectGarantie($IdProd,$nIdContrat,$nIdPersonne,$nIdFormule)
    {
    	
    	$bId = false;
    	$oContratDate = new dataObject_contrat();
    	
    	$sreqG="select * from garantie where Identifiant_produit='".$IdProd."' and Type_garantie='B'";
    	$aRowG =  self::$_oConnexion->query($sreqG);
    
	    foreach ($aRowG as $ikey => $aelmt)
		{
			$nIdGarantie = 	$aelmt['Identifiant_garantie'];	
	    	$aDateContrat = $oContratDate->contrat_DateEffetFinContrat($nIdContrat);
	    	
	    	$tabEffet = explode('-', $aDateContrat[0]['Date_effet_contrat']);
	    	$dDatteEffef = $tabEffet[0]."-".$tabEffet[1]."-".$tabEffet[2];
	    	
	    	$tabEcheance = explode('-', $aDateContrat[0]['Date_echeance_contrat']);
	    	$dDatteEcheance = $tabEcheance[0]."-".$tabEcheance[1]."-".$tabEcheance[2];
			
	    	$sQuery = "INSERT INTO garantiesouscrite (
	    			Etat_garantie_souscrite,
					Date_effet_garantie_souscrite ,
					Date_fin_effet_garantie_souscrite ,
					Identifiant_contrat ,
					Identifiant_personne ,
					Identifiant_garantie ,
					Identifiant_formule 
	    	    		) values ('A','$dDatteEffef','$dDatteEcheance' ,'$nIdContrat','$nIdPersonne' ,'$nIdGarantie' ,'$nIdFormule')";
	    
	        $bId = self::$_oConnexion->execute($sQuery);
		}
		return $bId;
    }
    
    public function desactivateAllGarantieActiveContrat($idContrat)
    {
    	$sQuery = "UPDATE garantiesouscrite SET Etat_garantie_souscrite = 'I' 
    				WHERE Identifiant_contrat = ".$idContrat.
				  " AND Etat_garantie_souscrite = 'A' ";
    	if($idContrat != '' || $idContrat != null)
    		return self::$_oConnexion->execute($sQuery);
    	else return false;
    }
}
?>